package com.doubao.wechat.util;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.concurrent.ThreadLocalRandom;

/**
 * 订单号生成工具类
 */
public class OrderNumberUtil {

    private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");

    /**
     * 前缀：支付订单
     */
    private static final String PAY_PREFIX = "PAY";

    /**
     * 前缀：退款订单
     */
    private static final String REFUND_PREFIX = "REF";

    /**
     * 生成支付订单号
     * 格式：PAY + 年月日时分秒 + 4位随机数
     *
     * @return 支付订单号
     */
    public static String generatePaymentOrderNumber() {
        return generateOrderNumber(PAY_PREFIX);
    }

    /**
     * 生成退款订单号
     * 格式：REF + 年月日时分秒 + 4位随机数
     *
     * @return 退款订单号
     */
    public static String generateRefundOrderNumber() {
        return generateOrderNumber(REFUND_PREFIX);
    }

    /**
     * 生成订单号
     *
     * @param prefix 前缀
     * @return 订单号
     */
    private static String generateOrderNumber(String prefix) {
        // 获取当前时间并格式化
        String dateTimeStr = LocalDateTime.now().format(DATE_TIME_FORMATTER);

        // 生成4位随机数
        String randomNum = String.format("%04d", ThreadLocalRandom.current().nextInt(10000));

        // 组合订单号
        return prefix + dateTimeStr + randomNum;
    }
}